
#ifndef _UTILS_H
#define _UTILS_H

#include "public_def.h"

#ifndef UINT_MAX
#define UINT_MAX (~0U)
#endif

//Global mutex
pthread_mutex_t g_mutex;

//Initialize global mutex
//
//Parameter:
//		
//Return:
//	None
//
void InitGlobalMutex(void);

//Release global mutex
//
//Parameter:
//		
//Return:
//	None
//
void ReleaseGlobalMutex(void);

//Lock global mutex
//
//Parameter:
//		
//Return:
//	None
//
void Global_lock(void);

//Unlock global mutex
//
//Parameter:
//		
//Return:
//	None
//
void Global_unlock(void);

//Global mutex validation check
//
//Parameter:
//		
//Return:
//	true 	if valid.
//
bool Global_lock_valid(void);

//Get NTP time
//
//Parameter:
//	ts 		timestamp
//Return:
//	NTP timestamp
//
float NTP_Time(time_t ts);

//Get the current NTP time
//
//Parameter:
//		
//Return:
//	NTP timestamp
//
uint32 NTP_Now(void);

//Generate a random new ID
//
//Parameter:
//	
//Return:
//	New random ID
//
uint32 NewID(void);

//Initialize random seed
//
//Parameter:
//	
//Return:
//	None
//
void InitRandomSeed(void);

//Generate a 32 bit random number
//
//Parameter:
//	
//Return:
//	New generated 32 bit random value
//
uint32 Random(void);

//Generate a new session ID
//
//Parameter:
//	None	
//
//Return:
//	New generated session ID
//
uint32 GenSessionID(void);

//Base64 encoder
//
//Parameter:
//	pSrc			Input buffer address	
//	iLen 			Input buffer length
//	pBuf			Output buffer address
//	iBufLen		Output buffer length
//	
//Return:
//	Start address of output buffer
//
char * base64_encode1(uint8* pSrc, int iLen,  char * pBuf, int iBufLen);

unsigned short myntols(unsigned short _sh_input);

char *chp_SearchNum(char *chp_Src, unsigned int liv_SrcSize,const char *chp_Num, unsigned int liv_NumSize);
void Array_unlock(void);
void Array_lock(void);


#endif


